What is jsbn?
The jsbn npm package is a library that implements big number arithmetic and RSA encryption. It is useful for cryptography and other applications that require manipulation of large integers that are beyond the native JavaScript Number limit.
What are jsbn's main functionalities?
Big Number Arithmetic
This feature allows for the addition, subtraction, multiplication, division, and modulus operations on large integers.
var BigInteger = require('jsbn').BigInteger;
var a = new BigInteger('91823918239182398123');
var b = new BigInteger('98237283728372873232');
var sum = a.add(b); // Addition
var difference = a.subtract(b); // Subtraction
var product = a.multiply(b); // Multiplication
var quotient = a.divide(b); // Division
var remainder = a.mod(b); // Modulus
RSA Encryption
This feature allows for RSA encryption and decryption, which is useful for secure data transmission.
var BigInteger = require('jsbn').BigInteger;
var RSAKey = require('jsbn').RSAKey;
var key = new RSAKey();
key.setPublic('...public exponent...', '...modulus...');
var encrypted = key.encrypt('text to encrypt');
key.setPrivate('...modulus...', '...public exponent...', '...private exponent...');
var decrypted = key.decrypt(encrypted);
Other packages similar to jsbn
bignumber.js
bignumber.js is a JavaScript library for arbitrary-precision decimal and non-decimal arithmetic. It provides similar big number arithmetic capabilities as jsbn but with a focus on decimal arithmetic and more extensive API for different mathematical operations.
node-rsa
node-rsa is a Node.js RSA library that provides similar RSA encryption and decryption functionalities as jsbn. It offers a more user-friendly API and additional features such as key generation, signing, and verification.
forge
forge is a JavaScript library that provides a wide range of cryptographic operations including big number arithmetic and RSA encryption. It is more comprehensive than jsbn, offering additional features like symmetric encryption, hashing, and TLS support.
jsbn: javascript big number
Tom Wu's Original Website
I felt compelled to put this on github and publish to npm. I haven't tested every other big integer library out there, but the few that I have tested in comparison to this one have not even come close in performance. I am aware of the bi
module on npm, however it has been modified and I wanted to publish the original without modifications. This is jsbn and jsbn2 from Tom Wu's original website above, with the module pattern applied to prevent global leaks and to allow for use with node.js on the server side.
usage
var BigInteger = require('jsbn').BigInteger;
var bi = new BigInteger('91823918239182398123');
console.log(bi.bitLength()); // 67
API
bi.toString()
returns the base-10 number as a string
bi.negate()
returns a new BigInteger equal to the negation of bi
bi.abs
returns new BI of absolute value
bi.compareTo
bi.bitLength
bi.mod
bi.modPowInt
bi.clone
bi.intValue
bi.byteValue
bi.shortValue
bi.signum
bi.toByteArray
bi.equals
bi.min
bi.max
bi.and
bi.or
bi.xor
bi.andNot
bi.not
bi.shiftLeft
bi.shiftRight
bi.getLowestSetBit
bi.bitCount
bi.testBit
bi.setBit
bi.clearBit
bi.flipBit
bi.add
bi.subtract
bi.multiply
bi.divide
bi.remainder
bi.divideAndRemainder
bi.modPow
bi.modInverse
bi.pow
bi.gcd
bi.isProbablePrime